cmake_minimum_required(VERSION 3.0.0)

set(MODULE_NAME "CurseUtils")
set(${MODULE_NAME}_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR};${CMAKE_CURRENT_SOURCE_DIR}/include" CACHE INTERNAL "${MODULE_NAME} of the sources direcotry.")
set(${MODULE_NAME}_LIBRARIES "${MODULE_NAME}" CACHE INTERNAL "${MODULE_NAME} of the library.")

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/include
)

# find_package 命令还可以用来加载 cmake 的功能模块
# 并不是所有的库都直接支持 cmake 查找的，但大部分都支持了 pkg-config 这个标准，
# 因此 cmake 提供了间接加载库的模块：FindPkgConfig， 下面这行命令表示加载 FindPkgConfig 模块，
# 这个 cmake 模块提供了额外的基于 “pkg-config” 加载库的能力
# 执行下面的命令后后会设置如下变量，不过一般用不到：
# PKG_CONFIG_FOUND            pkg-config 可执行文件是否找到了
# PKG_CONFIG_EXECUTABLE       pkg-config 可执行文件的路径
# PKG_CONFIG_VERSION_STRING   pkg-config 的版本信息
find_package(PkgConfig REQUIRED)

# 加载 FindPkgConfig 模块后就可以使用 pkg_check_modules 命令加载需要的库
# pkg_check_modules 命令是由 FindPkgConfig 模块提供的，因此要使用这个命令必须先加载 FindPkgConfig 模块。
# 执行 pkg_check_modules 命令加载库也会设置一些类似执行 find_package 加载库后设置的变量：
# DdeDockInterface_FOUND
# DdeDockInterface_INCLUDE_DIRS
# DdeDockInterface_LIBRARIES
# 还有有另外的一些变量以及更灵活的用法，比如一次性查找多个库，这些请自行查找 cmake 文档学习。
pkg_check_modules(NCURSES REQUIRED ncursesw)

add_library(${MODULE_NAME}
    "src/CurseUtils.c"
)
target_include_directories(${MODULE_NAME} PRIVATE
    ${NCURSES_INCLUDE_DIRS}
)
target_link_libraries(${MODULE_NAME}
    ${NCURSES_LIBRARIES}
)

# add_subdirectory(lib/CurseUtils)
# target_include_directories(${MODULE_NAME} PRIVATE
#     ${CurseUtils_INCLUDE_DIRS}
# )
# target_link_libraries(${MODULE_NAME}
#     ${CurseUtils_LIBRARIES}
# )

# CurseUtils Test
option(ENABLE_CURSEUTILS_TEST "Enable building CurseUtils test" ON)
if(ENABLE_CURSEUTILS_TEST)
    add_subdirectory(test/curse-base-test)
    add_subdirectory(test/curse-base-box-test)
endif(ENABLE_CURSEUTILS_TEST)